/*
 * Copyright 1999-2017 Alibaba Group Holding Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License" ) {
        return true;
    }
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.visitor;

import me.itsoo.elasticbatis.parsing.druid.sql.ast.statement.SQLForeignKeyImpl;
import me.itsoo.elasticbatis.parsing.druid.sql.ast.statement.SQLSelectQueryBlock;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlForceIndexHint;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlIgnoreIndexHint;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlKey;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlPrimaryKey;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlUnique;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MySqlUseIndexHint;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.MysqlForeignKey;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlCaseStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlCursorDeclareStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlDeclareConditionStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlDeclareHandlerStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlDeclareStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlIterateStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlLeaveStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlRepeatStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.clause.MySqlSelectIntoStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.expr.MySqlCharExpr;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.expr.MySqlJSONTableExpr;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.expr.MySqlOrderingExpr;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.expr.MySqlOutFileExpr;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.expr.MySqlUserName;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.CobarShowStatus;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsBaselineStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsCancelDDLJob;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsChangeDDLJob;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsClearDDLJobCache;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsInspectDDLJobCache;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsRecoverDDLJob;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsRemoveDDLJob;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.DrdsRollbackDDLJob;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlAnalyzeStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlBinlogStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlCheckTableStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlChecksumTableStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlClearPlanCacheStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlDisabledPlanCacheStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlEventSchedule;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlExecuteForAdsStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlExecuteStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlExplainPlanCacheStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlExplainStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlExtPartition;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlFlashbackStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlFlushStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlHelpStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlHintStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlLoadDataInFileStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlLoadXmlStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlLockTableStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlManageInstanceGroupStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlMigrateStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlOptimizeStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlPartitionByKey;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlPrepareStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlRaftLeaderTransferStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlRaftMemberChangeStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlResetStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlSetTransactionStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByKey;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByList;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlSubPartitionByValue;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlUnlockTablesStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlUpdatePlanCacheStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlUpdateStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MySqlUpdateTableSource;
import me.itsoo.elasticbatis.parsing.druid.sql.dialect.mysql.ast.statement.MysqlDeallocatePrepareStatement;
import me.itsoo.elasticbatis.parsing.druid.sql.visitor.SQLASTVisitor;

public interface MySqlASTVisitor extends SQLASTVisitor {
    default boolean visit(MySqlTableIndex x) {
        return true;
    }

    default void endVisit(MySqlTableIndex x) {
    }

    default boolean visit(MySqlKey x) {
        return true;
    }

    default void endVisit(MySqlKey x) {
    }

    default boolean visit(MySqlPrimaryKey x) {
        return true;
    }

    default void endVisit(MySqlPrimaryKey x) {
    }

    default boolean visit(MySqlUnique x) {
        return true;
    }

    default void endVisit(MySqlUnique x) {
    }

    default boolean visit(MysqlForeignKey x) {
        return visit((SQLForeignKeyImpl) x);
    }

    default void endVisit(MysqlForeignKey x) {
        endVisit((SQLForeignKeyImpl) x);
    }

    default void endVisit(MySqlPrepareStatement x) {
    }

    default boolean visit(MySqlPrepareStatement x) {
        return true;
    }

    default void endVisit(MySqlExecuteStatement x) {
    }

    default boolean visit(MysqlDeallocatePrepareStatement x) {
        return true;
    }

    default void endVisit(MysqlDeallocatePrepareStatement x) {
    }

    default boolean visit(MySqlExecuteStatement x) {
        return true;
    }

    default void endVisit(MySqlDeleteStatement x) {
    }

    default boolean visit(MySqlDeleteStatement x) {
        return true;
    }

    default void endVisit(MySqlInsertStatement x) {
    }

    default boolean visit(MySqlInsertStatement x) {
        return true;
    }

    default void endVisit(MySqlLoadDataInFileStatement x) {
    }

    default boolean visit(MySqlLoadDataInFileStatement x) {
        return true;
    }

    default void endVisit(MySqlLoadXmlStatement x) {
    }

    default boolean visit(MySqlLoadXmlStatement x) {
        return true;
    }

    default void endVisit(CobarShowStatus x) {
    }

    default boolean visit(CobarShowStatus x) {
        return true;
    }

    default void endVisit(DrdsCancelDDLJob x) {
    }

    default boolean visit(DrdsCancelDDLJob x) {
        return true;
    }

    default void endVisit(DrdsRecoverDDLJob x) {
    }

    default boolean visit(DrdsRecoverDDLJob x) {
        return true;
    }

    default void endVisit(DrdsRollbackDDLJob x) {
    }

    default boolean visit(DrdsRollbackDDLJob x) {
        return true;
    }

    default void endVisit(DrdsRemoveDDLJob x) {
    }

    default boolean visit(DrdsRemoveDDLJob x) {
        return true;
    }

    default void endVisit(DrdsInspectDDLJobCache x) {
    }

    default boolean visit(DrdsInspectDDLJobCache x) {
        return true;
    }

    default void endVisit(DrdsClearDDLJobCache x) {
    }

    default boolean visit(DrdsClearDDLJobCache x) {
        return true;
    }

    default void endVisit(DrdsChangeDDLJob x) {
    }

    default boolean visit(DrdsChangeDDLJob x) {
        return true;
    }

    default void endVisit(DrdsBaselineStatement x) {
    }

    default boolean visit(DrdsBaselineStatement x) {
        return true;
    }

    default void endVisit(MySqlBinlogStatement x) {
    }

    default boolean visit(MySqlBinlogStatement x) {
        return true;
    }

    default void endVisit(MySqlResetStatement x) {
    }

    default boolean visit(MySqlResetStatement x) {
        return true;
    }

    default void endVisit(MySqlPartitionByKey x) {
    }

    default boolean visit(MySqlPartitionByKey x) {
        return true;
    }

    default void endVisit(MySqlUpdatePlanCacheStatement x) {
    }

    default boolean visit(MySqlUpdatePlanCacheStatement x) {
        return true;
    }

    default void endVisit(MySqlClearPlanCacheStatement x) {
    }

    default boolean visit(MySqlClearPlanCacheStatement x) {
        return true;
    }

    default void endVisit(MySqlDisabledPlanCacheStatement x) {
    }

    default boolean visit(MySqlDisabledPlanCacheStatement x) {
        return true;
    }

    default void endVisit(MySqlExplainPlanCacheStatement x) {
    }

    default boolean visit(MySqlExplainPlanCacheStatement x) {
        return true;
    }

    default boolean visit(MySqlSelectQueryBlock x) {
        return visit((SQLSelectQueryBlock) x);
    }

    default void endVisit(MySqlSelectQueryBlock x) {
        endVisit((SQLSelectQueryBlock) x);
    }

    default boolean visit(MySqlOutFileExpr x) {
        return true;
    }

    default void endVisit(MySqlOutFileExpr x) {
    }

    default boolean visit(MySqlExplainStatement x) {
        return true;
    }

    default void endVisit(MySqlExplainStatement x) {
    }

    default boolean visit(MySqlUpdateStatement x) {
        return true;
    }

    default void endVisit(MySqlUpdateStatement x) {
    }

    default boolean visit(MySqlSetTransactionStatement x) {
        return true;
    }

    default void endVisit(MySqlSetTransactionStatement x) {
    }

    default boolean visit(MySqlUserName x) {
        return true;
    }

    default void endVisit(MySqlUserName x) {
    }

    default boolean visit(MySqlUseIndexHint x) {
        return true;
    }

    default void endVisit(MySqlUseIndexHint x) {
    }

    default boolean visit(MySqlIgnoreIndexHint x) {
        return true;
    }

    default void endVisit(MySqlIgnoreIndexHint x) {
    }

    default boolean visit(MySqlLockTableStatement x) {
        return true;
    }

    default void endVisit(MySqlLockTableStatement x) {
    }

    default boolean visit(MySqlLockTableStatement.Item x) {
        return true;
    }

    default void endVisit(MySqlLockTableStatement.Item x) {
    }

    default boolean visit(MySqlUnlockTablesStatement x) {
        return true;
    }

    default void endVisit(MySqlUnlockTablesStatement x) {
    }

    default boolean visit(MySqlForceIndexHint x) {
        return true;
    }

    default void endVisit(MySqlForceIndexHint x) {
    }

    default boolean visit(MySqlHelpStatement x) {
        return true;
    }

    default void endVisit(MySqlHelpStatement x) {
    }

    default boolean visit(MySqlCharExpr x) {
        return true;
    }

    default void endVisit(MySqlCharExpr x) {
    }

    default boolean visit(MySqlAnalyzeStatement x) {
        return true;
    }

    default void endVisit(MySqlAnalyzeStatement x) {
    }

    default boolean visit(MySqlOptimizeStatement x) {
        return true;
    }

    default void endVisit(MySqlOptimizeStatement x) {
    }

    default boolean visit(MySqlHintStatement x) {
        return true;
    }

    default void endVisit(MySqlHintStatement x) {
    }

    default boolean visit(MySqlOrderingExpr x) {
        return true;
    }

    default void endVisit(MySqlOrderingExpr x) {
    }

    default boolean visit(MySqlCaseStatement x) {
        return true;
    }

    default void endVisit(MySqlCaseStatement x) {
    }

    default boolean visit(MySqlDeclareStatement x) {
        return true;
    }

    default void endVisit(MySqlDeclareStatement x) {
    }

    default boolean visit(MySqlSelectIntoStatement x) {
        return true;
    }

    default void endVisit(MySqlSelectIntoStatement x) {
    }

    default boolean visit(MySqlCaseStatement.MySqlWhenStatement x) {
        return true;
    }

    default void endVisit(MySqlCaseStatement.MySqlWhenStatement x) {
    }

    default boolean visit(MySqlLeaveStatement x) {
        return true;
    }

    default void endVisit(MySqlLeaveStatement x) {
    }

    default boolean visit(MySqlIterateStatement x) {
        return true;
    }

    default void endVisit(MySqlIterateStatement x) {
    }

    default boolean visit(MySqlRepeatStatement x) {
        return true;
    }

    default void endVisit(MySqlRepeatStatement x) {
    }

    default boolean visit(MySqlCursorDeclareStatement x) {
        return true;
    }

    default void endVisit(MySqlCursorDeclareStatement x) {
    }

    default boolean visit(MySqlUpdateTableSource x) {
        return true;
    }

    default void endVisit(MySqlUpdateTableSource x) {
    }

    default boolean visit(MySqlSubPartitionByKey x) {
        return true;
    }

    default void endVisit(MySqlSubPartitionByKey x) {
    }

    default boolean visit(MySqlSubPartitionByList x) {
        return true;
    }

    default void endVisit(MySqlSubPartitionByList x) {
    }

    default boolean visit(MySqlDeclareHandlerStatement x) {
        return true;
    }

    default void endVisit(MySqlDeclareHandlerStatement x) {
    }

    default boolean visit(MySqlDeclareConditionStatement x) {
        return true;
    }

    default void endVisit(MySqlDeclareConditionStatement x) {
    }

    default boolean visit(MySqlFlushStatement x) {
        return true;
    }

    default void endVisit(MySqlFlushStatement x) {
    }

    default boolean visit(MySqlEventSchedule x) {
        return true;
    }

    default void endVisit(MySqlEventSchedule x) {
    }

    default boolean visit(MySqlChecksumTableStatement x) {
        return true;
    }

    default void endVisit(MySqlChecksumTableStatement x) {
    }

    default boolean visit(MySqlFlashbackStatement x) {
        return true;
    }

    default void endVisit(MySqlFlashbackStatement x) {
    }

    default boolean visit(MySqlCheckTableStatement x) {
        return true;
    }

    default void endVisit(MySqlCheckTableStatement x) {
    }

    default boolean visit(MySqlExecuteForAdsStatement x) {
        return true;
    }

    default void endVisit(MySqlExecuteForAdsStatement x) {
    }

    default boolean visit(MySqlManageInstanceGroupStatement x) {
        return true;
    }

    default void endVisit(MySqlManageInstanceGroupStatement x) {
    }

    default boolean visit(MySqlRaftMemberChangeStatement x) {
        return true;
    }

    default void endVisit(MySqlRaftMemberChangeStatement x) {
    }

    default boolean visit(MySqlRaftLeaderTransferStatement x) {
        return true;
    }

    default void endVisit(MySqlRaftLeaderTransferStatement x) {
    }

    default boolean visit(MySqlMigrateStatement x) {
        return true;
    }

    default void endVisit(MySqlMigrateStatement x) {
    }

    default boolean visit(MySqlSubPartitionByValue x) {
        return true;
    }

    default void endVisit(MySqlSubPartitionByValue x) {
    }

    default boolean visit(MySqlExtPartition x) {
        return true;
    }

    default void endVisit(MySqlExtPartition x) {
    }

    default boolean visit(MySqlExtPartition.Item x) {
        return true;
    }

    default void endVisit(MySqlExtPartition.Item x) {
    }

    default boolean visit(MySqlJSONTableExpr x) {
        return true;
    }

    default void endVisit(MySqlJSONTableExpr x) {
    }

    default boolean visit(MySqlJSONTableExpr.Column x) {
        return true;
    }

    default void endVisit(MySqlJSONTableExpr.Column x) {
    }
}
